﻿using NExt.Core.Model.Base;
using NExt.util;

namespace NExt.data
{
    public class Node : Node<NodeEvents>
    {
    }

    public abstract class Node<TEvents> : Observable<TEvents>
        where TEvents : NodeEvents, new()
    {
        public bool? leaf { get; set; }
    }

    public class NodeEvents : ObservableEvents
    {
        public IScript append { get; set; }
        public IScript beforeappend { get; set; }
        public IScript beforeinsert { get; set; }
        public IScript beforemove { get; set; }
        public IScript beforeremove { get; set; }
        public IScript insert { get; set; }
        public IScript move { get; set; }
        public IScript remove { get; set; }
    }
}
